#ifndef MOVETOOL_H
#define MOVETOOL_H

#include "Common/Geometry/Circle.h"

#include "Input/EventArgs/MouseButtonEventArgs.h"
#include "Input/EventArgs/MouseMoveEventArgs.h"
#include "Input/EventArgs/MouseScrollEventArgs.h"
#include "Input/EventArgs/KeyEventArgs.h"

#include "EditorCore/Actions/IAction.h"
#include "EditorCore/Tools/ITool.h"

#include "Entities/BodyEntity.h"
#include "Actions/CircleCreateAction.h"

class CircleAddTool : public editor_core::ITool
{
public:
	CircleAddTool( BodyEntity* parentBody );
	virtual ~CircleAddTool();

	virtual editor_core::IAction* Activate();
	virtual editor_core::IAction* Deactivate();
	virtual editor_core::IAction* ProcessMouseButtonPress( input::MouseButtonEventArgs* mouseButtonEventArgs );
	virtual editor_core::IAction* ProcessMouseButtonRelease( input::MouseButtonEventArgs* mouseButtonEventArgs );
	virtual editor_core::IAction* ProcessMouseMove( input::MouseMoveEventArgs* mouseMoveEventArgs );
	virtual editor_core::IAction* ProcessMouseScroll( input::MouseScrollEventArgs* mouseScrollEventArgs );
	virtual editor_core::IAction* ProcessKeyPress( input::KeyEventArgs* keyEventArgs );
	virtual editor_core::IAction* ProcessKeyRelease( input::KeyEventArgs* keyEventArgs );

private:
	void RefreshTempAction( cmn::Circle circle, BodyEntity* parentBody );

private:
	cmn::Circle m_circle;
	CircleCreateAction* m_tempAction;

	BodyEntity* m_parentBody;
};

#endif
